Cryptocurrency Technologies
Coursera course from Princeton University, here are some information and notes from the course.
Cryptographic Hash Functions
basic term:
- takes any string of any size as input
- fixed-size output (We’ll use 256 bits )
- efficiently computable
Security properties:
- collision-free
- hiding
- puzzle-friendly
collision-free
Definition
Nobody can find x and y such that:
x!=y and H(x) = H(y)
So that is what we call collision-free.
Actually collision do exist. But it merely be found ——that is guaranteed the work.
Application
If we know H(x) = H(y), it’s safe to assume that x = y. Hash function provide us with a efficient way to recognize the same things. The hash is small, which has only 256 bits, while the whole things might be really big.
Hiding
Definition
We want something like this:
Given H(x), it is infeasible to find x.
high min-entropy : the distribution is “very spread out”. If r is chosen from a probability distribution that has high min-entropy, then given H(r | x), it is infeasible to find x.
Application : Commitment
Commit to a value, reveal it later.
com = H(key | msg)
Hidding:
Given H(key | msg), infeasible to find msg.
Binding:
Infeasible to find msg != msg’ such that H(key | msg) == H(key | msg’)
Puzzle-friendly
for every possible output value y, if k is chosen from a distribution with high min-entropy, then it is infeasible to find x such that H(k | x) = y.
Application: Search puzzle
- given a “puzzle ID” id (from high min-entropy distrib), and a target set Y;
- try to find a “solution” x such that H(id | x) = y.
Add:
common hash function in shell
1 | md5 |
bitcoin use sha256 as its hash function
Topic from Prof.Yuen
some keywords
Zero-knoledge proff approach
Linkable ring signature
Lighting network
IOTA
Byteball
Hdera/Hashgraph
monero’s limitation
RingCT 2.0
BulletRingCT